<script lang="ts">
import { defineComponent } from 'vue'

export default defineComponent({
	onLaunch: function() {
		console.log('App Launch')
		// 申请定位权限
		this.requestLocationPermission()
		// 检查网络状态
		this.checkNetworkStatus()
	},
	onShow: function() {
		console.log('App Show')
	},
	onHide: function() {
		console.log('App Hide')
	},
	methods: {
		// 请求定位权限
		requestLocationPermission() {
			uni.authorize({
				scope: 'scope.userLocation',
				success() {
					console.log('位置权限授权成功')
				},
				fail(err) {
					console.error('位置权限授权失败:', err)
					uni.showModal({
						title: '提示',
						content: '需要位置权限才能获取当前位置，请在设置中打开位置权限',
						confirmText: '去设置',
						success(res) {
							if (res.confirm) {
								uni.openSetting()
							}
						}
					})
				}
			})
		},
		// 检查网络状态
		checkNetworkStatus() {
			uni.getNetworkType({
				success: (res) => {
					const networkType = res.networkType
					console.log('当前网络类型:', networkType)
					
					if (networkType === 'none') {
						console.log('当前无网络连接，切换至离线模式')
						// 应用启动时无网络，自动切换至离线模式
						// 由于store可能还未初始化，这里使用uni.setStorageSync来存储离线状态
						uni.setStorageSync('OFFLINE_MODE', true)
					}
				}
			})
			
			// 监听网络状态变化
			uni.onNetworkStatusChange((res) => {
				console.log('网络状态变化, 当前是否连接:', res.isConnected)
				console.log('当前网络类型:', res.networkType)
				
				if (!res.isConnected) {
					uni.showToast({
						title: '网络已断开，切换至离线模式',
						icon: 'none'
					})
					uni.setStorageSync('OFFLINE_MODE', true)
				}
			})
		}
	}
})
</script>

<style>
	/*每个页面公共css */
	page {
		margin: 0;
		padding: 0;
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
			Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
	}
</style>
